This is part of scalecube-js project, see more at https://github.com/scalecube/scalecube-js
Full documentation
Microservices
This package provides Scalecube's implementation for microservices architecture.
documentation
please Read before starting to work with scalecube.
Usage
import { createMicroservice } from '@scalecube/scalecube-microservice';
import { TransportNodeJS } from '@scalecube/transport-nodejs';
import { joinCluster } from '@scalecube/cluster-nodejs';
const microserviceInstance = createMicroservice({
services: [],
seedAddress : 'pm://myOrganization:8080/ServiceA',
address : 'pm://myOrganization:8080/ServiceB',
transport: TransportNodeJS,
cluster: joinCluster,
defaultRouter: retryRouter({period:10}),
debug: true
})
Define a service
import { ASYNC_MODEL_TYPES } from '@scalecube/scalecube-microservice';
export const greetingServiceDefinition = {
serviceName: 'GreetingService',
methods: {
hello: {
asyncModel: ASYNC_MODEL_TYPES.REQUEST_RESPONSE,
}
},
};
Create a service
import { createMicroservice } from '@scalecube/scalecube-microservice';
import { greetingServiceDefinition } from './definitions';
createMicroservice({
services : [{
definition: greetingServiceDefinition,
reference: {
hello : async (name) => `Hello ${name}`
},
}],
address : 'seed'
});
example of working with dependencies
import { createMicroservice } from '@scalecube/scalecube-microservice';
import { greetingServiceDefinition } from './definitions';
createMicroservice({
service : [{
definition: greetingServiceDefinition,
reference: ({ createProxy, createServiceCall }) => {
const proxy = createProxy({ serviceDefinition: remoteServiceDefinition});
return new GreetingService(proxy);
}
}],
address : 'seed'
});
Use the service
import { createMicroservice } from '@scalecube/scalecube-microservice';
const microservice = createMicroservice({
address : 'ms1',
seedAddress : 'seed'
});
example of creating and using a proxy
const proxyName = microservice.createProxy({
serviceDefinition: remoteServiceDefinition
});
proxyName.hello('ME').then(console.log)